/**
 * 知识库相关API服务
 */
import { get, post, del } from '@/utils/request'

/**
 * 上传知识库文件
 * @param {File} file - 要上传的文件对象
 * @param {string} knowledgeCode - 知识库编码
 * @returns {Promise} - 返回Promise对象
 */
export function uploadKnowledgeFile(file, knowledgeCode) {
  const formData = new FormData()
  formData.append('uploadFile', file)
  formData.append('knowledgeCode', knowledgeCode)
  
  return post('/user/knowledge/upload', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 获取知识库文件列表
 * @param {string} knowledgeCode - 知识库编码
 * @returns {Promise} - 返回Promise对象
 */
export function getKnowledgeFilesByCode(knowledgeCode) {
  return get(`/user/knowledge/files/${knowledgeCode}`)
}

/**
 * 获取知识库文件列表
 * @returns {Promise} - 返回Promise对象
 */
export function getKnowledgeFiles() {
  return get('/user/knowledge/files')
}

/**
 * 删除知识库文件
 * @param {string} fileId - 文件ID
 * @param {string} knowledgeCode - 知识库编码
 * @returns {Promise} - 返回Promise对象
 */
export function deleteKnowledgeFile(fileId, knowledgeCode) {
  return del(`/user/knowledge/file/${fileId}`, {
    params: {
      knowledgeCode: knowledgeCode
    }
  })
}

/**
 * 获取知识库文件详情
 * @param {string} fileId - 文件ID
 * @returns {Promise} - 返回Promise对象
 */
export function getKnowledgeFileDetail(fileId) {
  return get(`/user/knowledge/file/${fileId}`)
}

/**
 * 获取知识库列表（分页查询）
 * @param {Object} params - 查询参数
 * @param {number} params.page - 当前页码，默认为1
 * @param {number} params.pageSize - 每页数量，默认为10
 * @param {number} params.status - 知识库状态，可选
 * @returns {Promise} - 返回Promise对象
 */
export function getKnowledgeList(params = {}) {
  return get('/user/knowledge/list', params)
}

/**
 * 创建知识库
 * @param {Object} data - 知识库数据
 * @param {string} data.knowledgeName - 知识库名称
 * @param {string} data.description - 知识库描述
 * @returns {Promise} - 返回Promise对象
 */
export function createKnowledge(data) {
  return post('/user/knowledge/create', data)
}

/**
 * 删除知识库
 * @param {string} knowledgeCode - 知识库编码
 * @returns {Promise} - 返回Promise对象
 */
export function deleteKnowledge(knowledgeCode) {
  return del(`/user/knowledge/delete/${knowledgeCode}`)
}

/**
 * 获取文件内容
 * @param {string} fileName - 文件名
 * @returns {Promise} - 返回Promise对象
 */
export function getFileContent(fileName) {
  return get(`/user/knowledge/file/content/${fileName}`)
}